#ifndef QG_LOCAL_COMM_ENTRANCE_NETWORK_SERVICE_INCLUDE_CMDHANDLE_CNETBASE_H_
#define QG_LOCAL_COMM_ENTRANCE_NETWORK_SERVICE_INCLUDE_CMDHANDLE_CNETBASE_H_
#include "CNetworkServiceHeader.h"
#include <QObject>
#include <QTimer>
/**************************************************************************
Date: 2022-2-16
Description: CMD
Author:jxs
cmd处理基类
**************************************************************************/

NETWORKSERVICE_BEGIN_NAMESPACE


class QTNETWORK_EXPORT CNetBase: public QObject
{
    Q_OBJECT
public:
	// isStartTimer 是否启动定时器  startTimer 第一次启动时间    Interval定时器间隔
    CNetBase(bool isStartTimer = true, int startTimer = 30, int Interval = 600, QObject *p = nullptr);

    ~CNetBase();

private:

    // 是否启动定时器
    bool m_isStartTimer;
    // 第一次启动时间
    int m_startTimer;
    // 定时器间隔
    int m_Interval;
    // 定时器句柄
    QTimer *m_timer;
    // 所有定时器注册函数
    static std::list<std::function<void(void)> > *m_AllTimeInitFuncList;
    // 所有删除定时器函数
    static std::list<std::function<void(void)> > *m_AllTimeUninitFuncList;

public:
	// 10分钟超时执行函数
    virtual void timerOut();
public:
	/////////////// 内部接口 //////////////////

	// 注册定时器函数
    void myInitTimer();

	// 删除定时器
    void myUninitTimer();

	// 获取定时器注册列表
    static std::list<std::function<void(void)> > & getAllTimeInitFuncList() { return *m_AllTimeInitFuncList; }

	// 获取定时器注册列表
    static std::list<std::function<void(void)> > & getAllTimeUninitFuncList() { return *m_AllTimeUninitFuncList; }


private:
	// 定时拉取定时器
    int				m_iTimerOutPull;

};

NETWORKSERVICE_END_NAMESPACE

#endif // QG_LOCAL_COMM_ENTRANCE_NETWORK_SERVICE_INCLUDE_CMDHANDLE_CNETBASE_H_
